#pragma once

#include "fxcc/mono/pch.h"
#include "fxcc/mono/Converter.h"

namespace mono
{
    struct FXCC_API Args
    {
        std::vector<void *> m_Values;

        bool Empty()
        {
            return m_Values.size() == 0;
        }
        ~Args()
        {
   
        }

        template <typename T>
        bool PushArg(const T &t)
        {
            mono::Converter converter;
            MonoObject* arg{ 0 };

            bool res = converter.Encode<T>(arg, t);

            if(res)
            {
                ztclog::debug("success encode the arg");
            }
            this->m_Values.push_back(arg);
            return res;
        };
        void Push(MonoObject* obj)
        {
            m_Values.push_back(obj);
        }

    };
}
